import random
from datetime import datetime
from faker import Faker
import time
# 1、编写一个学生方法，产生一堆学生对象（姓名），传入形参控制学生生成数量
"""def student_name(n):
    faker1 = Faker(locale = 'zh_cn')
    list_name = []
    for i in range(n):
        list_name.append(faker1.name())
    return list_name
print(student_name(50))"""
# 2、创建一个方法，用来生成普通人必备的信息：姓名、年龄、住址、身份证号、手机号，随机生成20个写入personinfo.txt里
# 格式：姓名：xxx  年龄：xxx 住址：xxx 身份证号：xxx
"""def person_create():
    faker1 = Faker(locale = 'zh_cn')
    name = faker1.name()
    ssn_1 = faker1.ssn()
    age = str(int(datetime.now().strftime('%Y%m%d'))-int(ssn_1[-12:-4]))[0:2]
    address = faker1.address()
    return f"姓名：{name}\t年龄：{age}\t住址：{address}\t身份证号：{ssn_1}\n"
for i in range(20):
    with open('student02.txt','a',encoding='utf-8') as f:
        f.write(person_create())
with open('student02.txt','r',encoding='utf-8') as f:
     f.read()
"""
# 3、文本 student.txt中包含下面的内容
# zhangshan:30
# lisi:50
# wangwu:60
# lifei:70
# 期望能够统计出其中的内容，以dict的形式保存，例如：
# {"zhangshan":30,"lisi":50,"wangwu":60,"lifei":70}
"""with open('student.txt','r',encoding='utf-8') as f:
    dect_f={}
    i=0
    while i<4:
        list_f = f.readline()
        dect_f[eval('list_f.split(":")[0]')]=list_f.split(":")[1][:2]       =lsit_f.strip().split(":")[1]
        i+=1
print(dect_f)"""
# 4、给你一个 非空 整数数组 nums ，除了某个元素只出现一次以外，其余每个元素均出现两次。
# 找出那个只出现了一次的元素
"""def num(nums):
    for i in nums:
        if nums.count(i)==1:
            return i
print(num([1,2,3,4,3,2,1]))
"""
# 5、输入：["1","a","b","3","5","8","_"] 想要提取里面得数字，并保存到一个列表中
"""def fun_5(list_in):
    list_new=[]
    for i in list_in:
        if '0'<=i<='9':
            list_new.append(int(i))
    return list_new
print(fun_5(["1","a","b","3","5","8","_"]))"""

# 6、写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,地址
# 用户通过input输入这4个内容(支持持续输入,Q或q退出),并传递给函数，函数接收到这些内容,
# 将其追加到student_msg文件中
"""def fun_6(name,age,address,sex='男'):
    with open('student_msg','a',encoding='utf-8') as f:
        f.write(f"姓名:{name},性别:{sex},年龄:{age},地址:{address}\n")
while True:
    u_q = input("输入Q或q结束输入。。。继续请点击回车")
    if u_q in ('Q','q'):
        print("您已退出系统！！")
        break
    else:
        name = input("请输入姓名：")
        age = input("请输入年龄：")
        sex = input("请输入性别：")
        address = input("请输入地址：")
        if sex=='':
            fun_6(name,age,address)
        else:
            fun_6(name,age,address,sex)
        print("数据传入成功！")
"""

# 7、打印功能菜单、添加学生信息、删除学生信息、修改学生信息、显示学生信息、退出系统，
# 并且需要接收用户的输入，在根据输入内容调用相应函数实现相应功能（存入文件），模板图如下。
# 每次对学生管理系统发生改动，要写入改动点到log.txt文本中
"""def add_stu():
    print("添加学生信息:")
    name = input("请输入姓名：")
    list_name = []
    with open('student_msg', 'r', encoding='utf-8') as f:
        list_stu = f.readlines()
        for i in list_stu:
            list_name.append(str(i).split(':')[0])
    if name not in list_name:
        age = input("请输入年龄：")
        sex = input("请输入性别：")
        address = input("请输入地址：")
        with open('student_msg', 'a', encoding='utf-8') as f:
            f.write(f"姓名:{name},性别:{sex},年龄:{age},地址:{address}\n")
        print("添加成功！")
        with open("log.txt", 'a', encoding='utf-8') as a:
            a.write(f"{time.strftime('%Y-%m-%d  %H:%M:%S')}\t用户调用功能①添加学生信息")
    else:
        print("您输入的学生信息已存在！")

def del_stu():
    print("删除学生信息:")
    with open("log.txt", 'a', encoding='utf-8') as a:
        a.write(f"{time.strftime('%Y-%m-%d  %H:%M:%S')}\t用户调用功能②删除学生信息")
def update_stu():
    print("修改学生信息:")
    name_old = input("请您输入要修改的学生姓名：")
    with open('student_msg', 'r', encoding='utf-8') as f:
        r_list = f.readlines()
        # contect  = f.read()
        name_list = []
        for i in r_list:
            name_list.append(str(i).split(':')[0])
    if name_old in name_list:
        name_new = input("请输入新的学生姓名：")
        age_new = input("请输入年龄：")
        sex_new = input("请输入性别：")
        address_new = input("请输入地址：")
        with open('student_msg', 'a', encoding='utf-8') as f:
            f.write(f"姓名:{name_new},性别:{sex_new},年龄:{age_new},地址:{address_new}\n")
    with open("log.txt", 'a', encoding='utf-8') as a:
        a.write(f"{time.strftime('%Y-%m-%d  %H:%M:%S')}\t用户调用功能③修改学生信息")
def display():
    print("显示学生信")
    with open("student_msg", 'r', encoding='utf-8') as f:
        f.read()
    with open("log.txt", 'a', encoding='utf-8') as a:
        a.write(f"{time.strftime('%Y-%m-%d  %H:%M:%S')}\t用户调用功能④查看学生全部信息")

def exit_stu():
    print("您已退出系统！")
    with open("log.txt", 'a', encoding='utf-8') as a:
        a.write(f"{time.strftime('%Y-%m-%d  %H:%M:%S')}\t用户调用功能⑤退出系统")

while True:
    print("1、添加学生信息\n"
          "2、删除学生信息\n"
          "3、修改学生信息\n"
          "4、显示学生信息\n"
          "5、退出系统")
    user_in = input("请选择功能：")
    if user_in=='1':
        add_stu()
    elif user_in=='2':
        del_stu()
    elif user_in=='3':
        update_stu()
    elif user_in=='4':
        display()
    elif user_in=='5':
        exit_stu()
        break

"""

# 8、如今的社交软件层出不穷，虽然功能千变万化，但都具有好友管理系统的基本功能，
# 包括添加好友、删除好友、备注好友、展示好友等。下面是一个简单的好友管理系统的功能菜单（存入文件）
# 好友管理系统中有5个功能，每个功能都对应一个序号，用户可根据提示“请输入您的选项”选择序号执行相应的操作，包括：
# 添加好友：用户根据提示“请输入要添加的好友：”输入要添加好友的姓名，添加后会提示“好友添加成功”。
# 删除好友：用户根据提示“请输入删除好友姓名：”输入要删除好友的姓名，删除后提示“删除成功”
# 备注好友：用户根据提示“请输入要修改的好友姓名：”和“请输入修改后的好友姓名：
# ”分别输入修改前和修改后的好友姓名，修改后会提示“备注成功”。
# 展示好友：若用户还没有添加过好友，提示“好友列表为空”，否则返回每个好友的姓名。
# 退出：关闭好友管理系统。
# 本任务要求编写程序，模拟实现如上所述的好友管理系统。
# 文件读取要使用相对路径，确保在任何的电脑、终端都可以运行

"""while True:
    print("1、添加好友\n"
          "2、删除好友\n"
          "3、备注好友\n"
          "4、展示好友\n"
          "5、退出")
    user_in = input("请选择功能：")
    if user_in=='1':
        #添加好友
        name = input("请输入要添加的好友：")
        list_f = []
        with open('haoyou.txt','r',encoding='utf-8') as f:
            list_r = f.readlines()
            for i in list_r:
                list_f.append(str(i)[:-1])
        if name not in list_f:
            with open('haoyou.txt','a',encoding='utf-8') as f:
                f.write(name+'\n')
            print("好友添加成功")
        else:
            print("已有该好友，请勿重复添加")
    elif user_in=='2':
        name = input("请输入删除好友姓名：")
        list_f = []
        with open('haoyou.txt', 'r', encoding='utf-8') as f:
            list_r = f.readlines()
            for i in list_r:
                list_f.append(str(i)[:-1])
        if name in list_f:
            print("删除")
        else:
            print("你没有该好友，删除失败")
    elif user_in=='3':
        name = input("请输入要修改的好友姓名：")
        list_f = []
        with open('haoyou.txt', 'r', encoding='utf-8') as f:
            list_r = f.readlines()
            content = f.read()
            for i in list_r:
                list_f.append(str(i)[:-1])
        if name in list_f:
            name_new = input("请输入修改后的好友姓名：")
            content = content.replace(name,name_new)
            with open('haoyou.txt', 'w', encoding='utf-8') as f:
                f.write(content)
            print("好友修改成功")
        else:
            print("没有该好友，修改失败！")
    elif user_in=='4':
        with open('haoyou.txt', 'r', encoding='utf-8') as f:
            if len(f.read())==0:
                print("好友列表为空")
            else:
                f.read()
    elif user_in=='5':
        print("您已退出系统！")
        break
"""


